
# 可变参数
"""
说明 ： 输入的参数个数是可以发生变化 ，比如：传递可以两个值，也可以传递三个值。
包含 ：
    1. 列表形式的可变参数 ： 定义时参数名加一个* ，调用时传递的值的数量是可变化的，接受进来的是元组。
    2. 字典形式的可变参数 ： 定义是参数名前加两个*
"""


# 需求 ：实现一个加法函数 ，要求能接受任意个数量相加
def add(a,b,*args):
    print(args)
    total = a + b + sum(args)
    return total


print(add(3,4))
print(add(3,4,5))
print(add(3,4,5,6,7,8,9))       # 以位置形式进行传递
print(add(3,4,*[5,6,7,8,9]))    # 是将列表里的元素传入
# print(add(3,4,[5,6,7,8,9]))
print(add(3,4,*(5,6,7,8,9)))


def add1(**kwargs):
    print("kwargs:",kwargs)
    total = 0
    for x in kwargs.values():
        total += x
    return total


print(add1(a=1,b=2))   # 以关键字形式进行传递
print(add1(a=1,b=2,x=20,y=100))   # 以关键字形式进行传递
print(add1(**{'a':1,'b':2,'c':3}))     # 将字典里的键值对传入可变参数